package cn.lianxi;

import java.io.FileInputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/**
 * linux wget下载www.baidu.com首页的文本内容，命名为index.html 
 * 
 * 通过java代码读取本地的index.html文件成java字节数组。 
 * 
 * 通过java代码打开hdfs要写入文件的输出流。 
 * 
 * 通过java代码已经打开的输出流，写入之前读取完成的java字节数组。写入完成，将输出流关闭。 
 * 
 * 通过java代码写主方法，传入本地的输入文件和hdfs的输出文件路径。
 * 
 * @author yingfing
 *
 */
public class HDFSLianXi_01 {

	public static void main(String[] args) throws Exception {

		// 0. 获取集群配置信息
		Configuration conf = new Configuration();
		// 1. 获取文件系统
		FileSystem fs = FileSystem.get(conf);

		// 2. 获取文件输出流
		Path path = new Path("/user/zhaoyingfei/tmp/index.html");
		FSDataOutputStream in = fs.create(path);

		// 3. 读取项目本地文件输出流
		FileInputStream fis = new FileInputStream(
				"./src/main/resources/html/index.html");

		byte[] bytes = new byte[1024 * 1024 * 35];
		while ((fis.read(bytes)) > 0) {
			// 4. 写入文件内容
			IOUtils.copyBytes(fis, in, conf);
		}

		// 5.关闭流
		fis.close();
		fs.close();
	}

}
